package com.pingan.generator.api.entity.base;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

import java.util.List;
import java.util.Map;

@Component
public interface BaseMapper<T> extends Mapper<T>, MySqlMapper<T> {
	
    //FIXME 特别注意，该接口不能被扫描到，否则会出错
    List<T> pagedList(Map<?,?> params);
    
	/**
	 * 查询单条记录
	 * @param entity
	 * @return
	 */
	T selectOne(@Param("item")T obj);

	/**
	 * 查询记录集合
	 * @param entity
	 * @return
	 */
	List<T> selectList(@Param("item")T obj);
	
	
	/**
	 * 通用的保存方法
	 * @param <T>
	 * @param entity
	 */
	void save(@Param("item")T obj);
	

	/**
	 * 通用的修改方法
	 * @param <T>
	 * @param entity
	 */
	int update(@Param("item")T obj);
	
	
	/**
	 * 批量保存
	 * @param list
	 */
	int batchSave(List<T> list);
	
	
	/**
	 * 批量更新
	 * @param list
	 * @return
	 */
	int batchUpdate(List<T> list);

	/**
	 * 
	 * @param t
	 * @return
	 */
	int count(@Param("item")T obj);
}
